package com.jiepos.mpos.inter.push;

import java.util.List;
import java.util.Map;

/**
 * @ClassName: IMposPush
 * @Description: 推送服务接口
 * @author 孙永
 * @date 2017年11月4日 上午11:06:12
 */
public interface IMposPush {
	
	/**
	 * 根据客户端标识或者别名推送无额外内容消息
	 * @param mposPush
	 * @param clientId 客户端标识
	 * @param alias 别名
	 * @param title 标题
	 * @param alert 内容
	 */
	void pushSingle(MposPush mposPush, String clientId, String alias, String title, String alert);
	
	/**
	 * 根据客户端标识或者别名推送有额外内容消息
	 * @param mposPush
	 * @param clientId 客户端标识
	 * @param alias 别名
	 * @param title 标题
	 * @param alert 内容
	 * @param extras 额外内容
	 */
	void pushSingle(MposPush mposPush, String clientId, String alias, String title, String alert, Map<String, String> extras);
	
	/**
	 * 根据客户端标识推送无额外内容消息
	 * @param mposPush
	 * @param clientId 客户端标识
	 * @param title 标题
	 * @param alert 内容
	 */
	void pushSingleById(MposPush mposPush, String clientId, String title, String alert);
	
	/**
	 * 根据客户端标识推送有额外内容消息
	 * @param mposPush
	 * @param clientId 客户端标识
	 * @param title 标题
	 * @param alert 内容
	 * @param extras 额外内容
	 */
	void pushSingleById(MposPush mposPush, String clientId, String title, String alert, Map<String, String> extras);
	
	/**
	 * 根据别名推送无额外内容消息
	 * @param mposPush
	 * @param alias 别名
	 * @param title 标题
	 * @param alert 内容
	 */
	void pushSingleByAlias(MposPush mposPush, String alias, String title, String alert);
	
	/**
	 * 根据别名推送有额外内容消息
	 * @param mposPush
	 * @param alias 别名
	 * @param title 标题
	 * @param alert 内容
	 * @param extras 额外内容
	 */
	void pushSingleByAlias(MposPush mposPush, String alias, String title, String alert, Map<String, String> extras);
	
	/**
	 * 根据客户端标识或别名批量推送无额外内容消息
	 * @param mposPush
	 * @param clientIds 客户端标识集合
	 * @param aliases 别名集合
	 * @param title 标题
	 * @param alert 内容
	 */
	void pushList(MposPush mposPush, List<String> clientIds, List<String> aliases, String title, String alert);
	
	/**
	 * 根据客户端标识或别名批量推送有额外内容消息
	 * @param mposPush
	 * @param clientIds 客户端标识集合
	 * @param aliases 别名集合
	 * @param title 标题
	 * @param alert 内容
	 * @param extras 额外内容
	 */
	void pushList(MposPush mposPush, List<String> clientIds, List<String> aliases, String title, String alert, Map<String, String> extras);
	
	/**
	 * 根据客户端标识批量推送无额外内容消息
	 * @param mposPush
	 * @param clientIds 客户端标识集合
	 * @param title 标题
	 * @param alert 内容
	 */
	void pushListByIds(MposPush mposPush, List<String> clientIds, String title, String alert);
	
	/**
	 * 根据客户端标识批量推送有额外内容消息
	 * @param mposPush
	 * @param clientIds 客户端标识集合
	 * @param title 标题
	 * @param alert 内容
	 * @param extras 额外内容
	 */
	void pushListByIds(MposPush mposPush, List<String> clientIds, String title, String alert, Map<String, String> extras);
	
	/**
	 * 根据别名批量推送无额外内容消息
	 * @param mposPush
	 * @param aliases 别名集合
	 * @param title 标题
	 * @param alert 内容
	 */
	void pushListByAlias(MposPush mposPush, List<String> aliases, String title, String alert);
	
	/**
	 * 根据别名批量推送有额外内容消息
	 * @param mposPush
	 * @param aliases 别名集合
	 * @param title 标题
	 * @param alert 内容
	 * @param extras 额外内容
	 */
	void pushListByAlias(MposPush mposPush, List<String> aliases, String title, String alert, Map<String, String> extras);
	
	/**
	 * 全部推送无额外内容消息
	 * @param mposPush
	 * @param title 标题
	 * @param alert 内容
	 */
	void pushApp(MposPush mposPush, String title, String alert);
	
	/**
	 * 全部推送有额外内容消息
	 * @param mposPush
	 * @param title 标题
	 * @param alert 内容
	 * @param extras 额外内容
	 */
	void pushApp(MposPush mposPush, String title, String alert, Map<String, String> extras);

}
